草庐IT

scrapy -- CrawlSpider类

全部标签

python - 安装scrapy时出错

我正在尝试安装scrapy,它给出了以下错误:Downloading/unpackingcryptography>=0.2.1(frompyOpenSSL->Scrapy)Runningsetup.pyegg_infoforpackagecryptographyPackagelibffiwasnotfoundinthepkg-configsearchpath.Perhapsyoushouldaddthedirectorycontaining`libffi.pc'tothePKG_CONFIG_PATHenvironmentvariableNopackage'libffi'foundPa

python - 无法获得最简单的管道示例以在 scrapy 中工作

这是我的简单代码,我没有让它工作。我是initspider的子类这是我的代码classMytestSpider(InitSpider):name='mytest'allowed_domains=['example.com']login_page='http://www.example.com'start_urls=["http://www.example.com/ist.php"]definit_request(self):#"""Thisfunctioniscalledbeforecrawlingstarts."""returnRequest(url=self.login_page,

python - scrapy项目中errback和callback中各种异常如何处理?

我目前正在从事一个爬虫项目,这对于确保每个请求都得到正确处理非常重要,即记录错误或保存成功结果。我已经实现了基本的爬虫,我现在可以成功处理99%的请求,但是我可能会得到验证码、50x、30x之类的错误,甚至结果中没有足够的字段(然后我会尝试另一个网站来找到缺失的字段)。起初,我认为在解析回调中引发异常并在errback中处理它们更“合乎逻辑”,这可以使代码更具可读性。但是我试了才发现errback只能捕获下载器模块中的错误,比如非200响应状态。如果我在回调中引发一个自行实现的ParseError,蜘蛛只会引发并停止。即使我必须直接在回调中处理解析请求,我也不知道如何以干净的方式在回调

python - 在 Scrapy >= 0.14 中以编程方式启动爬虫的最简单方法是什么

我想从Python模块在Scrapy中启动一个爬虫。我想从本质上模仿$scrapycrawlmy_crawler-asome_arg=value-LDEBUG的本质我准备好了以下东西:项目的settings.py文件项目和管道一个爬虫类,它扩展了BaseSpider并在初始化时需要参数。我可以很高兴地使用上面指定的scrapy命令运行我的项目,但是我正在编写集成测试并且我想以编程方式:使用settings.py中的设置和具有my_crawlername属性的爬虫启动爬虫(我可以从我的测试模块轻松实例化此类。我希望按照settings.py中的规范使用所有管道和中间件。我很高兴在爬虫完成

python - 让 scrapy spider 爬取整个站点

我正在使用scrapy来抓取我拥有的旧网站,我正在使用下面的代码作为我的蜘蛛。我不介意为每个网页输出文件,或者包含其中所有内容的数据库。但是我确实需要能够让蜘蛛抓取整个东西,而不必输入我目前必须做的每一个urlimportscrapyclassDmozSpider(scrapy.Spider):name="dmoz"allowed_domains=["www.example.com"]start_urls=["http://www.example.com/contactus"]defparse(self,response):filename=response.url.split("/"

python - BaseSpider 和 CrawlSpider 的区别

我一直在努力理解在网络抓取中使用BaseSpider和CrawlSpider的概念。我读过docs.但是BaseSpider上没有提及。如果有人能解释一下BaseSpider和CrawlSpider之间的区别,那将对我很有帮助。 最佳答案 BaseSpider是以前存在的东西,现在已弃用(自0.22起)-使用scrapy.Spider代替:importscrapyclassMySpider(scrapy.Spider):#...scrapy.Spider是最简单的蜘蛛,它基本上会访问start_urls中定义的URL或start_r

python - scrapy如何使用规则?

我是Scrapy的新手,我想了解如何在CrawlSpider中使用这些规则。如果我有一条规则,我要在亚利桑那州图森的纸杯蛋糕列表中爬取黄页,那么生成URL请求如何激活该规则-具体来说,它如何激活restrict_xpath属性?谢谢。 最佳答案 CrawlSpider的规则属性指定如何从页面中提取链接以及应为这些链接调用哪些回调。默认处理它们parse()该类中实现的方法--lookheretoreadthesource.因此,无论何时您想要触发URL的规则,您只需要生成一个scrapy.Request(url,self.parse

python - 当脚本在根目录之外时获取 scrapy 项目设置

我制作了一个Scrapy蜘蛛,它可以从位于项目根目录中的脚本成功运行。由于我需要从同一个脚本运行来自不同项目的多个蜘蛛(这将是一个根据用户请求调用脚本的django应用程序),我将脚本从其中一个项目的根目录移动到父目录。由于某种原因,该脚本不再能够获取项目的自定义设置,以便将抓取的结果通过管道传输到数据库表中。这是我用来从脚本运行蜘蛛的scrapy文档中的代码:defspiderCrawl():settings=get_project_settings()settings.set('USER_AGENT','Mozilla/4.0(compatible;MSIE7.0;WindowsN

python - 如何创建自定义 Scrapy Item Exporter?

我正在尝试创建一个基于JsonLinesItemExporter的自定义ScrapyItemExporter,这样我就可以稍微改变它生成的结构。我已阅读此处的文档http://doc.scrapy.org/en/latest/topics/exporters.html但它没有说明如何创建自定义导出器、将其存储在何处或如何将其链接到您的管道。我已经确定了如何使用FeedExporter进行定制,但这不符合我的要求,因为我想从我的管道中调用这个导出器。这是我想出的代码,它存储在项目根目录中名为exporters.py的文件中fromscrapy.contrib.exporterimport

python - 如何在 scrapy 中获取原始 start_url(在重定向之前)

我正在使用Scrapy来抓取一些页面。我从Excel工作表中获取start_urls,我需要将url保存在项目中。classabc_Spider(BaseSpider):name='abc'allowed_domains=['abc.com']wb=xlrd.open_workbook(path+'/somefile.xlsx')wb.sheet_names()sh=wb.sheet_by_name(u'Sheet1')first_column=sh.col_values(15)start_urls=first_columnhandle_httpstatus_list=[404]def